home *** CD-ROM | disk | FTP | other *** search
/ Ray Dream Studio 5 / Ray Dream.iso / pc / DreamSDK / Windows / SAMPLES / PRIMITIV / SPHR / COMSPHR.H < prev    next >
Encoding:
C/C++ Source or Header  |  1997-07-11  |  2.8 KB  |  75 lines

  1. // Copyright (c)1995 Ray Dream, Inc. All Rights Reserved.
  2. /*$Id: COMSphr.h 1.6 1997/06/20 22:32:39 damien Exp $*/
  3.  
  4. //
  5. // COM Example of a Geometric Primitive based on Ray tracing / and Patches
  6. //
  7.  
  8. #ifndef __COMSPHR__
  9. #define __COMSPHR__  
  10.  
  11. #ifndef __I3DEXPRM__
  12. #include "I3DExPrm.h"
  13. #endif
  14.                   
  15. #ifndef __SPHRDLL__
  16. #include "SPHRDLL.h"
  17. #endif
  18.  
  19. // Component Object Model Definition :
  20.                     
  21. // define the Sphere CLSID                    
  22. // 3F9C3A80-895F-101C-8BFC-F629D50D262B
  23. DEFINE_GUID(CLSID_Sphere, 0x3F9C3A80L, 0x895F, 0x101C, 0x8B, 0xFC, 0xF6, 0x29, 0xD5, 0x0D, 0x26, 0x2B);
  24.  
  25.  
  26. // Sphere Object definition : 
  27. // Sphere Object :
  28. #undef INTERFACE
  29. #define INTERFACE Sphere
  30. class Sphere : public I3DExGeometricPrimitive, public I3DExDataExchanger {
  31. public :  
  32.   Sphere();
  33.   ~Sphere();
  34.   
  35.   // IUnknown Interface :
  36.   STDMETHODIMP         QueryInterface(THIS_ REFIID riid, LPVOID FAR* ppvObj);
  37.   STDMETHODIMP_(ULONG) AddRef(THIS);
  38.   STDMETHODIMP_(ULONG) Release(THIS);
  39.   
  40.   // I3DExtension method :
  41.   STDMETHODIMP_(I3DExtension*) Clone(THIS);
  42.   STDMETHODIMP                 ShellUtilitiesInit(THIS_ IShUtilities* shellUtilities);  
  43.   
  44.   // I3DExDataExchanger methods :
  45.   STDMETHODIMP_(ExtensionDataMap*) GetExtensionDataMap(THIS);
  46.   STDMETHODIMP_(void*)             GetExtensionDataBuffer(THIS);
  47.   STDMETHODIMP                     ExtensionDataChanged(THIS);
  48.   STDMETHODIMP                     HandleEvent(THIS_ ULONG sourceID);
  49.   STDMETHODIMP_(short)             GetResID(THIS);
  50.   
  51.   // I3DExGeometricPrimitiv methods
  52.   // Geometric Calls
  53.   STDMETHODIMP           GetBBox(THIS_ BOX3D* bbox);
  54.   STDMETHODIMP           EnumPatches(THIS_ EnumPatchesCallback callback, void* privData);
  55.   STDMETHODIMP           EnumFacets(THIS_ EnumFacetsCallback callback, void* privData,NUM3D fidelity);
  56.     STDMETHODIMP           GetNbrLOD(short &nbrLod);
  57.     STDMETHODIMP           GetLOD(short lodIndex, NUM3D &lod);
  58.     STDMETHODIMP           MakeFacetMesh(THIS_ short index, FacetMesh &amesh);
  59.     STDMETHODIMP           MakeFacetMesh(THIS_ NUM3D lod,FacetMesh &amesh);
  60.   // Shading Calls
  61.   STDMETHODIMP_(ULONG) GetUVSpaceCount(THIS);
  62.   STDMETHODIMP         GetUVSpace(THIS_ ULONG uvSpaceID, UVSpaceInfo* uvSpaceInfo);
  63.   STDMETHODIMP         UV2XYZ(THIS_ VECTOR2D* uv,ULONG uvSpaceID, VECTOR3D* resultPosition, BOOLEAN* inUVSpace);
  64.   // Ray tracing Calls
  65.   STDMETHODIMP RayHit(THIS_ BOOLEAN* didHit, Ray3D* aR, RayHitParameters* RayHitParams, RayHit3D* hit);
  66.   STDMETHODIMP GetRayHitDetails(THIS_ RayHit3D* hit);
  67.   STDMETHODIMP RayAllHits(THIS_ Ray3D* aR, NUM3D tmin, NUM3D tmax, RayHit3D* hit, RayHitCallback callback, void* privData);
  68.   
  69. private :
  70.   void GetDetails(RayHit3D* hit);
  71.   ULONG      fCRef;      // reference Counter
  72.   };
  73.  
  74. #endif // __SPHERE__
  75.